The discrete cosine transform (DCT) is a very useful and important transformation in a wide range of signal processing systems. For example, the discrete cosine transform and its inverse transform (IDCT) are often two of the core operations in audio, image, and video coding systems. These transforms have even been adopted by several international coding standards, such as the Joint Picture Expert Group (JPEG), H.261, H.263, Moving Picture Experts Group 1 (MPEG-1), MPEG-2, and MPEG-4 standards.
Both the discrete cosine transform and its inverse transform involve intensive computational processes. For example, a direct implementation of an eight-point, one-dimensional discrete cosine transform typically involves sixty-four multiplication operations and fifty-six addition operations to convert input data into DCT coefficients. Other implementations of the discrete cosine transform attempt to reduce this complexity. These implementations, often referred to as “Fast DCT” algorithms, typically involve twenty-nine addition operations and between eleven and sixteen multiplication operations.
A problem with these implementations of the discrete cosine transform and its inverse transform is that they involve floating point multiplication operations. Floating point operations are typically slow and require larger areas when implemented in hardware. Also, the longer execution time required for floating point operations typically results in greater power consumption. This may be troublesome in applications such as mobile multimedia devices like digital cameras, videophones, and pocket computers, which often have limited power, processing resources, and memory.